xC0768 - xC10D3: Names
======================

TOOD: translate

Eldin   #
Torma   #
Rami    #
Bau #
Dekar   #
Talon       #
Whitey      #
Squawkie    #
Caw         #
Basileus    #
Cocky       #
Dappler     #
Neon        #
Rockwing    #
Regulus     #
Synge       #
Ferno       #
Hopp        #
Fowler      #
Chucker     #
Howard      #
Hotbeak     #
Nocurno     #
TuffRuff    #
Lockjaw     #
IronHoof    #
Squatch     #
Redbelly    #
Leo         #
Lizzy       #
Rooter      #
Airhead     #
Ignito      #
Flipper     #
Kimmie      #
Kermie      #
Minos       #
Midas       #
Toxy        #
Sal         #
Fluffy      #
Ruby        #
Cleo        #
Wolfie      #
Millenia    #
Zip         #
Chubs       #
Wart        #
Chopper     #
Solo        #
Hissy       #
Ratface     #
Bill        #
Screech     #
Vamp        #
Sub-Z       #
Slimy       #
Hothead     #
Rattle      #
Snoop       #
Platty      #
Taurus      #
Aslan       #
Fat Tail    #
Scalie      #
Wizosaur    #
Blitzen     #
Grizz       #
NemaTodd    #
Hairy       #
Zapper      #
Bumble      #
Spidey      #
Mudlover    #
Prickle     #
Arach       #
Sylk        #
Buzz        #
Flutter     #
Moth-ra     #
Sapphire    #
Monarch     #
Ringo       #
Teenie      #
Grub        #
Cynid       #
Dusty       #
Suckafly    #
George      #
Paul        #
Sucka       #
Ixod        #
John        #
ViceGrip    #
Fibbius     #
Jouster     #
Shelby      #
Inky        #
Snapper     #
Nessie      #
Shears      #
Lopper      #
Orca        #
Gigan       #
Curly       #
Pinch       #
Blotty      #
Drillbit    #
Tenta       #
Lasmo       #
Lance       #
Shocker     #
Wilma       #
Slith       #
Vicious     #
Rex         #
Terra       #
Char        #
Blaze       #
Vigil       #
Goldie      #
Baby D      #
Sparky      #
Argent      #
Jet         #
Optica      #
Drem        #
Hyde        #
Buster      #
Petit       #
Dino        #
Hydling     #
Verno       #
Frost       #
Mischief    #
Wriggle     #
Rocky       #
Gool        #
Pei Pei     #
Gobin       #
Goblige     #
Shady       #
Bonez       #
Donna       #
Deadhead    #
Skullom     #
Wanderer    #
Amon        #
Reaper      #
Skully      #
Allocen     #
Tirant      #
Headless    #
Voodoo      #
Mustang     #
Bonehead    #
Sandman     #
Petra       #
Lammie      #
Arcanus     #
Darklord    #
Willo       #
Eggbert     #
Pegasus     #
Esprit      #
Celestis    #
Draco       #
Viridis     #
Cherub      #
Thalia      #
Amalthea    #
Blossom     #
Wilt        #
Stalker     #
Thorn       #
Barkley     #
Rosy        #
Aeron       #
Gardner     #
Maden       #
Bulbus      #
Stinky      #
Dirtwyrm    #
Ferrum      #
Jerry       #
Dice        #
Gella       #
Shinybox    #
Goldman     #
Velox       #
Presto      #
Jiggle      #
Blubiks     #
Blob        #
Chester     #
Motin       #
Mimer       #
Spike       #
Suave       #
Stylin      #
Punky       #
Cubey       #
Jello       #




xC112B - xC1188: Width of single menu characters
================================================

Table contains custom width values for menu characters from
x20 to x7E -> 94 bytes long

The following menuchars have been inserted for the german version:
 Letter      | Hex | Char | Address(ROM) 
-------------|-----|------|--------------
 Capital Ä   | C4  |      | x71e102
 Capital Ö   | D6  |      | x71e242
 Capital Ü   | DC  |      | x71e288
 Lowercase ä | 22  | "    | x71d130
 Lowercase ö | 27  | '    | x71d248
 Lowercase ü | 3C  | <    | x71d2b6
 Eszet ß     | 3E  | >    | x71d2c0

The position of the custom widths for the menuchars was traced as follows:

1.
Preparation: insert the custom menuchars ä,ö,ü,ß in the proper slots.
Change the main menu entry "Monsters" zu "M"'<>er ".
Hexbytes are 4D 22 27 3C 3E 65 72 20.

Play the game till the end of the intro sequence (after talking to the mayor) and save the state as savestate1.

We want to stop, once the capital M of the word Monsters has been loaded into the tile at address 0600C620 in VRAM:

2.
Load Savestate1: and add the following breakpoint in no$gba and hit select.
[0871d9dc]? <- this is the location of the M in rom.

3.
SSavestate2: Select has been pressed and the M has been read from the above mentioned rom position.
The character data is being stored to 03007C5C in WRAM. Create this breakpoint here: [03007C5C]!
The following hexchars appear: 44 44 6c 6c 54 54 44 00 at that position.
Those are the chars containing the capital M.

Writing to VRAM happens in ASM at this rom position here: 08079B80

4.
Savestate3: The above mentioned position is being executed eight times.
Now the M-data is in VRAM.
Now the chessboard pattern has to be put into the tile too.

Add another breakpoint at 080799CC.
Here, the current char is being loaded into R1, for which the character data has to be read (in this order 22 for ä, 27 for ö, 3C for ü and 3E for ß).

Another breakpoint at 080799F4.
Here, the value from the address in 03006020 is being loaded. Its origin is the table of 94 bytes, that starts at xC112B in the rom.

5.
The following values are relevant for the letters ä, ö, ü and ß in our translation and have to be changed:
 Menuchar | Hex | Adress(ROM) | Old Value | New Value
----------|-----|-------------|-----------|-------------
    ä     | 22  |   xC114D    |     06    |     05
    ö     | 27  |   xC1152    |     03    |     05
    ü     | 3C  |   xC1167    |     08    |     05
    ß     | 3E  |   xC1169    |     08    |     06

This adjusts the width of the special characters in the menu.




xC11B4 - xC65FF: Huuuuuge Pointertable
======================================

TODO: Do we need to change this?!




xC6600 - xC6DBF: Villagenames (for Debugging?!)
===============================================

TODO: Is this being used? Translate?!




xC6DFC - xC8C2F: Battle messages
================================

TODO: Is this being used? Translate?!




xCB950 - xCBEAA: Battle messages
================================

TODO: Translate



xCCC64 - xCDC24: Parts of a debug menu?
=======================================

TODO: Is this being used? Translate?!




xCDCB4 - xCDF3F: Wordparts
==========================

TODO: translate




xCE030 - xCE919: Words and Statusstuff
======================================

TODO: translate




xCE1F8 - xCE249: Mainmenu words
===============================

GOLD/GM
Pointer is at x635E20
[080CE1F8]?
replaced GOLD by GM

TIME
Pointer is at x635E14
[080CE200]? -> 080CE1FC
write ZEIT to xCE1FC - xCE1FF, afterwards 00

Options
Pointer is at x635E08
[080CE208]? -> 080CE204
write Optionen to xCE204 - xCE20B, afterwards 00

Monsters
Pointer is at x635DFC
[080CE210]? -> 080CE210
write Monster to xCE210 - xCE216, afterwards 00

Change
Pointer is at x635DF0
[080CE21C]? -> 080CE218
write Gruppe to xCE218 - xCE21D, afterwards 00

Skills
Pointer is at x635DE4
[080CE224]? -> 080CE220
write Magie to xCE220 - xCE224, afterwards 00

Equip 
Pointer is at x635DD8
[080CE22C]? -> 080CE228
write Rüstung to xCE228 - xCE22E, afterwards 00

Special
Pointer is at x635DCC
[080CE234]? -> 080CE230
write Spezial to xCE230 - xCE236, afterwards 00

Status
Pointer ist bei x635DC0
[080CE23C]? -> 080CE238
write Status to xCE238 - xCE23D, afterwards 00

Items
Pointer ist bei x635DB4
[080CE244]? -> 080CE240
write Tasche to xCE240 - xCE245, afterwards 00



xCECD8 - xCEE35: Shards-Dialog & Selection
==========================================

TODO: translate




xCEFB4 - xD0902: Main Menu Messages
===================================

TODO: translate




xD1555 - xD19AE: Shopdata something?!
=====================================

TODO: is this being used? Translate?!




xD44D8 - muuuuuuch later: regular patterns
==========================================

TODO: What are these? Needed to be changed?




x5CAFC4 - x5D4D63: Introtext Graphics
=====================================

TODO: change graphics, maps, recompress, (potentially change pointers) and reinsert into ROM.

The color palette for these texts is located at x5E5238 (uncompressed as 15bit BGR) and contains 6 colors (12 Bytes). Can be extracted as regular PAL 24bit palette file for use with YY-Chr.


text1:
map   @ x5CAFC4 ( 856 Bytes), LZ77 compressed -> 2048 uncompressed
tiles @ x5D37D4 (2392 Bytes), LZ77 compressed -> 9216 uncompressed

text2:
map   @ x5CB31C ( 390 Bytes), LZ77 compressed -> 2048 uncompressed
tiles @ x5D412C ( 785 Bytes), LZ77 compressed -> 3072 uncompressed

text3:
map   @ x5CB4A4 ( 364 Bytes), LZ77 compressed -> 2048 uncompressed
tiles @ x5D4440 ( 583 Bytes), LZ77 compressed -> 2048 uncompressed

text4:
map   @ x5CB610 (352 Bytes), LZ77 compressed -> 2048 uncompressed
tiles @ x5D4688 (588 Bytes), LZ77 compressed -> 2048 uncompressed

text5:
map   @ x5CB770 (370 Bytes), LZ77 compressed -> 2048 uncompressed
map   @ x5D48D4 (606 Bytes), LZ77 compressed -> 2048 uncompressed

text6:
map   @ x5CB8E4 (346 Bytes), LZ77 compressed -> 2048 uncompressed
map   @ x5D4B34 (559 Bytes), LZ77 compressed -> 2048 uncompressed


Other Graphics (see also html file supplied):
x624b24
x624ca0
x624ed4
x6250e4
x625250
x625394
x62555c
x625734
x625934
x625b44
x625d90
x625f50
x6260d8
x6262bc
x626418
x6265f0
x6267b8
x626988
x626b54
x626d10
x626ecc
x6270e8
x6272ac
x627490
x627680
x6277cc
x6279cc
x627bc4
x627dc8
x627f48
x628098
x62820c




x5E5238 - x5E5243 Colorpalette for Introtexts
=============================================

6 colors from black (00 00) to white (FF 7F)
12 Bytes, -> 2 Bytes per color.
Colors are encoded just like with the SNES ?bbbbbgg gggrrrrr.
The bytes are stored in reverse order in the rom.
Meaning that the values are there like this: gggrrrrr?bbbbbgg
Every value can be between 0 and 31 (00000 - 11111)
and has to be multiplied with 8 to receive a 24bit RGB-value.
-> palex.jar does the job of extracting a palette into PAL-format
to be used with YYCHR.




x5E59D8 - x5E5B97 Colorpalette for the titlescreen (lufia logo)
===============================================================

224 colors are stored uncompressed here.
The titlescreen itself is encoded with 8bpp Mode7 and LZ77 compression.





x6D7490 - x6F8BCE: Enemy names, Attacks, Spells
===============================================

TODO: translate





x6FDEE8 - x7166B8: Items, Weapons, Gear
=======================================

TODO: translate and insert into the game
Note: I think the name of the items is simply terminated by byte x00, so it should be
easily possible to enlarge the size of the names... to be tested though...

Weapons (from x6FDEE8):
=======================
None - Nichts
Sharp Bone - Knochensplitter
Bamboo - Bambusstab
Club - Knüppel
Fishing Rod - Angelrute
Rapier - Degen
Knife - Messer
Slingshot - Schleuder
Mace - Keule
Boomerang - Boomerang
Insect Crush - Fliegenklatsche
Wooden Mallet - Holzhammer
Butterfly Knife - Springmesser
Wooden Sword - Holzschwert
Stone Horn - Steinhorn
Battle Wire - Kampfseil
Iron Class - 
Leather Whip - Lederpeitsche
Dagger - 
Short Sword - Kurzschwert
Kukuri - 
Rod - 
Flail - 
Gladius - 
Francesca - 
Wooden Staff - Holzstab
Aqua Whip - Wasserpeitsche
Iron Hammer - Stahlhammer
Scimitar - 
Fire Dagger - 
Divine Staff - 
Long Staff - Langstab
Pole Axe - Polaxt
Power Knuckles - Powerfäuste
Moonlight Lance - Mondscheinlanze
Holy Staff - Heiliger Stab
Long Sword - Langschwert
Cutter Whip - Klingenpeitsche
Main Gauche - 
Pain Whip - Nagelpeitsche
Rockbreaker - Steinbrecher
Chain - Kette
Estoc - 
Hammer Rod - 
Dragon Slayer - 
Chakram - 
Stun Gun - 
Aqua Sword - Wasserschwert
Rune Rapier - 
Rangoon Sword - 
Halberd - 
Ice Boomerang - Eisboomerang
Trident - 
Heavy Lance - Schwerlanze
Silver Sword - Silberschwert
Restraiunt Chain - 
Silver Rod - 
Zircon Axe - Zirkonaxt
Zircon Sword - Zirkonschwert
Supreme Claw - 
Iris Sword - Irisschwert
Iron Beak - 
Iron Fang - 
Insect Edge - 
Dark Fang - 
Gaia Root - 
Air Edge - 
Demon Fang - 
Flame Horn - Flammenhorn
Hell Scythe - 
Demon Horn - Dämonenhorn
Dragon Edge - 
Bright Horn - Leuchthorn
Bunny Sword - Hasenschwert
Poison Claw - Giftklaue
Bright Knife - Leuchtmesser
Poison Needle - Giftnadel
Sleep Rod - 
Fatal Pick - 
Zombie Killer - Zombieknipser
Inferno Sword - Infernoschwert
Flying Axe - Flugaxt
Demon Axe - Dämonenaxt
Dekar Sword - Dekarschwert
Beast Fang - 
Holy Edge - 
Silver Bow - Silberbogen
Goddess Sword - Göttinenschwert
Master Sword - Masterschwert
Poseidon Trident - 
Orichalch Blade - 
Demon Claw - Dämonenklaue
Dual Blade - Lufiaschwert
Ancient Sword - Ahnenschwert
Adamant Axe - 
Kappa Spear - 
Advent Sword - Adventschwert
Heavenly Whip - Himmelspeitsche
Sacred Sword - Heiliges Schwert
Egg Sword - Eierschwert
Phoenix Staff - 
Ice Maiden Blade - 
Gaia Sword - 
Surf Staff - 
Arcane Rod - 
Blood Chain - Blutkette
Blood Rod - 
Berserk Sword - Berserkerschwert
Gear (from x7040C8):
====================
Clothes - Kleidung
One-Piece - Einteiler
Cloth Tunic - 
Leather Vest - Lederweste
Leather Armor - Lederrüstung
Cloth Robe - 
Scale Plate - 
Cloth Armor - 
Hard Leather - Hartes Leder
Bark Tapa - 
Light Armor - Leichte Rüstung
Camu Armor - 
Poplos - 
Fur Cape - Fellumhang
Training Outfit - Trainingsanzug
Chain Mail - Kettenhemd
Bronze Armor - Bronzerüstung
Toga - 
Shell Armor - 
Heavy Tunic - 
Stone Plate - 
Cotehardie - 
Metal Mail - 
Solk Toga - 
Light Jacket - Leichte Jacke
Hard Coat - 
Golden Cloak - 
Silver Plate - 
Silver Robe - Silberrobe
Fake Fur - Kunstpelz
Crystal Mail - 
Crystal Robe - Kristallrobe
Feather Cloak - 
Erinite Dress - 
Power Robe - Powerrobe
Zircon Armor - Zirkonrüstung
Bubblewear - 
Iron Box - 
Jelly Armor - Glibberrüstung
Iron Saddle - Stahlsattel
Insect Cover - Insektendeckel
Demon Armor - Dämonenrüstung
Core Mail - 
Wind Armor - Windrüstung
Dark Armor - Kohlerüstung
Water Armor - Wasserrüstung
Earth Armor - Erdrüstung
Fire Armor - Feuerrüstung
Bright Armor - Leuchtrüstung
Magical Bikini - Zauberbikini
Spirit Armor - Geisterrüstung
Recover Armor - Erholungsrüstung
Revival Armor - Belebensrüstung
Soul Clothes - Seelenkleidung
Magic Scale - 
Holy Robe - Heilige Robe
Master Armor - Meisterrüstung
Royal Gown - 
Miracle Plate - 
Dragoon Armor - Drachenrüstung
Lucina Armor - 
Thin Cape - Dünner Umhang
Angel Raiment - 
Magic Vestment - 
Ancient Armor - Ahnenrüstung
Divine Armor - 
Wedding Dress - Hochzeitskleid
Mute Armor - Stummheitsrüstung
Silence Armor - Ruherüstung
Hell Armor - Hällenrüstung
Killer Armor - Killerrüstung
Shields (from x708120):
=======================
Chopping Board - Küchenbrett
Tray - 
Leather Shield - Lederschild
Buckler - 
Mini Shield - Minischild
Bark Shield - 
Kite Shield - 
Bronze Shield - Bronzeschild
Rune Shield - Runenschild
Round Shield - Rundschild
Hollow Shield - Hohlschild
Feather Shield - Federschild
Tower Shield - Turmschild
Silver Shield - Silberschild
Spiked Shield - Zackenschild
Lantern Shield - 
Crystal Shield - Kristallschild
Gauntlet - 
Zircon Shield - Zirkonschild
Jelly Shield - Glibberschild
Bone Shield - Knochenschild
Lizard Shield - 
Leaf Shield - Blätterschild
Earth Shield - Erdschild
Wind Shield - Windschild
Bright Shield - Leuchtschild
Fire Shield - Feuerschild
Water Shield - Wasserschild
Dark Shield - Kohleschild
Poseidon Shield - Poseidonschild
Apollo Shield - Apolloschild
Pegan Shield - 
Vacuum Shield - Vakuumschild
Mirror Shield - Spiegelschild
Trap Shield - Fallenschild
Ancient Shield - Ahnenschild
Wedding Bouquet - Brautstrauß
Divine Shield - 
Mist Shield - 
Bolt Shield - Blitzschild
Flame Shield - Flammenschild
Holy Shield - Heiliges Schild
Ice Shield - Eisschild
Master Shield - Meisterschild
Unholy Mirror - Unheiliger Spiegel
Helmets (from x70ABB8):
=======================
Pot - Topf
Pointy Hat - Spitzhut
Cloth Hood - 
Cat Ears - Katzenohren
Cap - Mütze
Cloth Helm - 
White Band - 
Pelt Hood - 
Katyusha - 
Leather Helm - Lederhelm
Glass Cap - Glasmütze
Bark Helm - 
Full Face - 
Stone Helm - Steinhelm
Turban - Turban
Silver Helm - Silberhelm
Erinite Helm - 
Circlet - 
Spiked Helm - Zackenhelm
Holy Cap - Heilige Mütze
Zircon Helm - Zirkonhelm
Jelly Helm - Glibberhelm
Golem Helm - Golemhelm
Shadow Roll - 
Dog Ears - Hundeohren
Mysterious Crest - 
Thornlet - 
Dragon Crown - Drachenkrone
Antennae - Antennen
Demon Horns - Dämonenhörner
Beast King Helm - Biesthelm
Sea King Helm - Seezungenhelm
Feathered Cap - Federmütze
Halo - 
Goggles - Brille
Headband - Kopfband
Victory Bandanna - 
Bright Tiara - 
Safety Hat - Sturzhelm
Rainbow Veil - 
Holy Helmet - Heiliger Helm
Yaksa Hairpin - 
Happy Mask - 
Bright Cap - Leuchtmütze
Wedding Veil - 
Ancient Helmet - Ahnenhelm
Divine Helmet - 
Demon Mask - Dämonenmaske
Simple Ring - Einfacher Ring
Glass Stud - 
Glass Bracelet - Glaskrönchen
Gold Bracelet - Goldkrönchen
Rings (from x70DAD8):
=====================
Shaman Ring - Shamanenring
Tail Ring - Schwanzring
Dark Tattoo - Kohlentattoo
Sky Feather - Himmelsfeder
Angelic Ring - 
Dark Crystal - Kohlenkristall
Light Tattoo - Leuchttattoo
Power Ring - Powerring
Muscle Ring - Muskelring
Smart Ring - Klugheitsring
Pegasus Shoes - Pegasusschuhe
Dark Chains - Kohleketten
Dragon Jewel - Drachenjuwel
Hard Mousse - 
Sonic Ring - Sonicring
Body Paint - Körperfarbe
Water Charm - 
Fire Charm - 
Earth Charm - 
Wind Charm - 
Protect Ring - Schutzring
Witch Ring - Hexenring
Cinder Ring - 
Squall Ring - 
Frost Ring - Frostring
Flash Ring - Blitzlichtring
Rune Ring - Runenring
Dragon Ring - Drachenring
Egg Ring - Eierring
Fortune Ring - Weissagungsring
Items (from x70F608):
=====================
Potion - Kraftwasser
Hi-Potion - Krafttrank
Antidote - Gegengift
Wake-Up Call - Wecker
Sanity Pill - 
Mysterious Pin - 
Vitamins - Hohes-C
Smart Tonic - 
Magic Guard - 
Sleep Ball - Schlafball
Daze Ball - 
Stun Ball - 
Smoke Ball - Rauchball
Ice Ball - Eisball
Fire Ball - Feuerball
Terror Ball - Terrorball
Escape Ball - Fluchtball
Insect Egg - Insektenei
Dried Bread - Trockenbrot
Dried Milk - Trockenmilch
Dried Meat - Trockenfleisch
Lak Cheese - 
Bitter Cheese - 
Blue Tea - Blauer Tee
Rotten Meat - Verdorbenes Fleisch
Moldy Bread - 
Power Beans - Kraftbohnen
Solid Milk - 
Meat Cube - Fleischwürfel
Honey Stone - Honigstein
Large Egg - Großes Ei
Sweet Water - 
Monster Book - Monsterbuch
Weapon Book - Waffenbuch
Shield Book - Schilderbuch
Armor Book - Rüstungsbuch
Helmet Book - Helmbuch
Accessory Book - Gegenstandbuch
Pure Water - 
Charred Newt - 
Ex-Potion - Kraftsirup
Magic Jar - Magiewasser
Hi-Magic - Magietrank
Ex-Magic - Magiesirup
Revive - Beleben
Miracle - Wunder
Life Source - Lebensquelle
Magic Source - Magiequelle
Power Source - Kraftquelle
Speed Source - Turboquelle
Mind Source - 
Aspirin - Aspirin
Goddess Statue - Göttinenstatue
Sacred Fruit - 
Dark Fruit - Kohlenfrucht
Earth Fruit - Erdfrucht
Wind Fruit - Windfrucht
Flame Fruit - Flammenfrucht
Aqua Fruit - Wasserfrucht
Wild Berry - Wilde Beeren
Earth Sap - 
Rose Seed - Rosensamen
Navaroa - 
Iris Water - Iriswasser
Crystal - Kristall
Dark Ruby - Kohlenrubin
Bright Gem - 
Fire Sand - Feuersand
Star Quartz - 
Lake Sand - Seesand
Black Water - Kohlenwasser
Sacred Branch - Heiliger Ast
Egg Dragon Fang - Drachenzahn
Dragon Fossil - Drachenfossil
Music Box - Jukebox
Nectar - Nektar
Water Ore - Wassererz
Dark Ore - Kohleerz
Bright Ore - Leuchterz
Fire Ore - Feuererz
Earth Ore - Erderz
Wind Ore - Winderz
Providence - 
Sea Disc - Meeresdisc
Mountain Disc - Bergdisc
Forest Disc - Walddisc
Field Disc - Felddisc
Cave Disc - Höhlendisc
Void Disc - 
Strong Disc - Stärkedisc
Healing Disc - Heilungsdisc
Revival Disc - Belebungsdisc
Platinum Disc - Platindisc
Blue Flame - Blaue Flamme
Gold Flame - Goldene Flamme
Jail Key - Gefängnisschlüssel
Hunter's License - Jägerlizenz
Member's Card - Mitgliedausweis
Love Letter - Liebesbrief
Moon Stone - Mondstein
Sea Stone - Meeresstein
Cloud Stone - Wolkenstein
White Shard - 
Blue Shard - 
Green Shard - 
Black Key - Kohlenschlüssel
White Flame - Weiße Flamme
Stone Fragment - Steinfragment
Pump Fuel - Pumpenbenzin
Explosives - Dynamit
Holy Water - Heiliges Wasser
Storage Key - 
Mirror Key - Spiegelschlüssel
Soldier Shield - Soldatenschild
Memorial Pendant - 
Room Key - Zimmerschlüssel
Maze Key - Labyrinthschlüssel
Royal Ring - Königsring
Ship Fuel - Schiffbenzin
Priphea Flowers - Priphea Blumen




x71D0CC - x71E2EC: Menü Character Tiles:
========================================

Character Map starts at: 7459020 / x71D0CC
                ends at: 7463660 / x71E2EC
10 Bytes per character (the last eight of which contain the actual pixel content).
That means: 464 characters altogether

Example:
Adress: x71D450 (Circle graphic 8x8 pixels @ 1bpp)
Bytes: 81 9B 1C 22 41 41 41 22 1C 00
Structure:
ID: 81 9B
|   ###  | 1C = 00011100
|  #   # | 22 = 00100010
| #     #| 41 = 01000001
| #     #| 41 = 01000001
| #     #| 41 = 01000001
|  #   # | 22 = 00100010
|   ###  | 1C = 00011100
|        | 00 = 00000000

German special characters:
==========================

Big Ä (C4) x71e102

|   # #  | 14
|        | 00
|   ###  | 1C
|  #   # | 22
|  ##### | 3E
|  #   # | 22
|  #   # | 22
|        | 00

Big Ö (D6) x71e242

|   # #  | 14
|        | 00
|   ###  | 1C
|  #   # | 22
|  #   # | 22
|  #   # | 22
|   ###  | 1C
|        | 00

Big Ü (DC) x71e288

|   # #  | 14
|        | 00
|  #   # | 22
|  #   # | 22
|  #   # | 22
|  #   # | 22
|   ###  | 1C
|        | 00

Small ä (22) (") x71d130

|  # #   | 28
|        | 00
|  ##    | 30
| #  #   | 48
|  ###   | 38
| #  #   | 48
|  ###   | 38
|        | 00

Small ö (27) (') x71d248

|  # #   | 28
|        | 00
|  ##    | 30
| #  #   | 48
| #  #   | 48
| #  #   | 48
|  ##    | 30
|        | 00

Small ü (3C) (<) x71d2b6

|  # #   | 28
|        | 00
| #  #   | 48
| #  #   | 48
| #  #   | 48
| #  #   | 48
|  ##    | 30
|        | 00

Sharp s 'ß' (3E) (>) x71d2c0

|  ##    | 30
| #  #   | 48
| #  #   | 48
| # ##   | 58
| #   #  | 44
| #   #  | 44
| # ##   | 58
| #      | 40




x71E2EC - x74D318: Dialog Character Tiles:
==========================================

Character map starts at: 7463660 / x71E2EC
                ends at: 7656216 / x74D318
26 bytes per character (the last 24 bytes contain the actual payload of the symbol).
That means: 7406 characters altogether


Description of the encoding using the letter 'A'

Address: @x71F944
26 Bytes: 82 60 10 00 10 00 28 00 28 00 28 00 44
          00 7C 00 44 00 44 00 44 00 00 00 00 00 <- End @71F95E
 ___________________________________________
|      Binary     | Bytes |     Graphic     |
|=================|=======|=================|
|Internal SymbolID| 82 60 |_________________|
|00010000|00000000| 10 00 |   #    |        |
|00010000|00000000| 10 00 |   #    |        |
|00101000|00000000| 28 00 |  # #   |        |
|00101000|00000000| 28 00 |  # #   |        |
|00101000|00000000| 28 00 |  # #   |        |
|01000100|00000000| 44 00 | #   #  |        |
|01111100|00000000| 7C 00 | #####  |        |
|01000100|00000000| 44 00 | #   #  |        |
|01000100|00000000| 44 00 | #   #  |        |
|01000100|00000000| 44 00 | #   #  |        |
|00000000|00000000| 00 00 |        |        |
|00000000|00000000| 00 00 |        |        |
|=================|=======|=================|


Another example: small 'a'

Adress: @x71FC84
26 Bytes: 82 81 00 00 00 00 00 00 38 00 44 00 04
          00 3C 00 44 00 44 00 3A 00 00 00 00 00 <- End @71FC9E
 ___________________________________________
|      Binary     | Bytes |     Graphic     |
|=================|=======|=================|
|Internal SymbolID| 82 81 |_________________|
|00000000|00000000| 00 00 |        |        |
|00000000|00000000| 00 00 |        |        |
|00000000|00000000| 00 00 |        |        |
|00111000|00000000| 38 00 |  ###   |        |
|01000100|00000000| 44 00 | #   #  |        |
|00000100|00000000| 04 00 |     #  |        |
|00111100|00000000| 3C 00 |  ####  |        |
|01000100|00000000| 44 00 | #   #  |        |
|01000100|00000000| 44 00 | #   #  |        |
|00111010|00000000| 3A 00 |  ### # |        |
|00000000|00000000| 00 00 |        |        |
|00000000|00000000| 00 00 |        |        |
|=================|=======|=================|

There is also symbols, that actually use both bytes and thus have twice the length.
-> We 'could' use regular occuring combinations of two letters in these such as 'ei',
'ch', 'in', 'en', 'im'... not done yet, though :)


German special characters:
==========================

Big Ä x721004 (AD)

|   # #  |        |	14 00
|        |        |	00 00
|    #   |        |	08 00
|   # #  |        |	14 00
|   # #  |        |	14 00
|  #   # |        |	22 00
|  #   # |        |	22 00
|  ##### |        |	3E 00
|  #   # |        |	22 00
|  #   # |        |	22 00
|        |        |	00 00
|        |        |	00 00

Big Ö x720bf4 (BF)

|   # #  |        |	14 00
|        |        |	00 00
|   ###  |        |	1C 00
|  #   # |        |	22 00
|  #   # |        |	22 00
|  #   # |        |	22 00
|  #   # |        |	22 00
|  #   # |        |	22 00
|  #   # |        |	22 00
|   ###  |        |	1C 00
|        |        |	00 00
|        |        |	00 00

Big Ü x721038 (AE)

|   # #  |        |	14 00
|        |        |	00 00
|  #   # |        |	22 00
|  #   # |        |	22 00
|  #   # |        |	22 00
|  #   # |        |	22 00
|  #   # |        |	22 00
|  #   # |        |	22 00
|  #   # |        |	22 00
|   ###  |        |	1C 00
|        |        |	00 00
|        |        |	00 00

Small ä x720bc0 (BE)

|        |        |	00 00
|   # #  |        |	14 00
|        |        |	00 00
|   ###  |        |	1C 00
|  #   # |        |	22 00
|      # |        |	02 00
|   #### |        |	1E 00
|  #   # |        |	22 00
|  #   # |        |	22 00
|   ### #|        |	1D 00
|        |        |	00 00
|        |        |	00 00

Small ö x720c90 (AF)

|        |        |	00 00
|   # #  |        |	14 00
|        |        |	00 00
|   ###  |        |	1C 00
|  #   # |        |	22 00
|  #   # |        |	22 00
|  #   # |        |	22 00
|  #   # |        |	22 00
|  #   # |        |	22 00
|   ###  |        |	1C 00
|        |        |	00 00
|        |        |	00 00

Small ü x720fd0 (AC)

|        |        |	00 00
|   # #  |        |	14 00
|        |        |	00 00
|  #   # |        |	22 00
|  #   # |        |	22 00
|  #   # |        |	22 00
|  #   # |        |	22 00
|  #   # |        |	22 00
|  #  ## |        |	26 00
|   ## # |        |	1A 00
|        |        |	00 00
|        |        |	00 00

Sharp s 'ß' x7209d2 (B4)

|        |        |	00 00
|  ###   |        |	38 00
| #   #  |        |	44 00
| #   #  |        |	44 00
| # ##   |        |	58 00
| #   #  |        |	44 00
| #   #  |        |	44 00
| #   #  |        |	44 00
| #   #  |        |	44 00
| # ##   |        |	58 00
| #      |        |	40 00
| #      |        |	40 00




x765D09 - x7E694E Dialogs:
==========================

TODO: translate




x7E8228 - x7FFFFF Unused memory (97752 Bytes!)
==============================================

TODO: Use this in case you need the space...




Other info:
===============

GBA-pointers:
-------------

Pointeraddress = xOffset + x08000000 (at least for ROM-pointers)
or
Pointeraddress = toLittleEndian(xOffset + x08000000)

Here:     x71D0CC
      + x08000000
	´   ---------
        x0871D0CC

-> convert endianness: CC D0 71 08
 
 
 
 
GBA Tile Encoding:
==================

8x8 pixels, with 4bpp

    1 2 3 4 5 6 7 8
  
A   a b c d e f g h
B   i j k l m n o p
C   q r s t u v w x
D   y z ä ö ü ß # '
E   A B C D E F G H
F   I J K L M N O P
G   Q R S T U V W X
H   Y Z Ä Ö Ü * + -

The pixels are being written sequentially in the ROM.
abcdefghijklmnop... etc.

But: two consecutive pixels are contained within a single byte
(4bpp -> 2*4bpp = 1 byte per 2 pixels).
Pixel a und b are contained in the same byte.
The byte is encoded as follows: bbbbaaaa.
When a is supposed to use palette color with index 1 (which is the second color of the palette),
aaaa would look like this: 0001. If it were the neinth color, the value would be 1001.
The same holds true for pixel b.




Mode7 Tile Encoding:
====================

Funnily, the GBA (or at least Lufia4) uses Mode7 tile encoding which is present in YY-Chr for SNES games.
It is used for instance in the intro for the Lufia logo at x5E30F0 inside the ROM (compressed with LZ77).
The encoding works as follows:

8x8 pixels, mit 8bpp

    1 2 3 4 5 6 7 8
  
A   a b c d e f g h
B   i j k l m n o p
C   q r s t u v w x
D   y z ä ö ü ß # '
E   A B C D E F G H
F   I J K L M N O P
G   Q R S T U V W X
H   Y Z Ä Ö Ü * + -

The pixels are being stored sequentially within the rom.
abcdefghijklmnop... etc.

Therefore any more complex encoding doesn't happen as each byte represents the color index of the single
256 color palette.





Tilemap encoding:
=================

In order to save space, tiles are only stored once and referenced within tilemaps
(which are mostly LZ77 compressed too). Here's how the tilemaps are encoded so you
could create a tilemap editor for Lufia4 if you wanted...

Looking at the lufia logo/titlescreen,...

                                the map starts at: 0600E000 in VRAM
the uppermost left part of the letter 'f' is here: 0600E05E <- d94 (according to no$gba debugger)

-> The value it points to is 03 00

Every entry in the tilemap is represented of two bytes.
The are encoded as follows: ppppvhtt tttttttt

pppp chooses (in 4bpp mode) one of the 15 possible 16-color palettes (these bits don't hold any meaning in 256 color mode).
v decides, weather the tile is mirrored vertically or not (1=mirrored, 0=not mirrored)
h decides, weather the tile is mirrored horizontally or not (1=mirrored, 0=not mirrored)
tttttttttt contains the tile-number -> it is possible to index 1024 tiles.


In the example:
Bytes umkehren:      x00      x03
                00000000 00000011
Tile with ID 3 is being used, not mirrored and there's only one single 256 color palette so no palette ID too.

The tilemap for the titlescreen lies compressed at x5CCD98, is 1024 tiles big
(which means 2048 bytes long) and thus is basically the complete size of one BG (32x32 tiles).